enum MATRIX_MAP_TYPE {ISOTROPIC, HORIZONTAL, VERTICAL, SQUARE};

#include <iostream>
#include <fstream>
#include <cmath>
#include <cstring>
#include <stdlib.h>

#include "Constant.h"
//#include "Map.h"


class CNode
{
public:
	
	CNode* m_nextNode;
	int m_x, m_y;
	
	CNode();
	~CNode();
		
protected:
		
};

class CHeader
{
public:
		
	CNode* m_node;
	int m_nodeCount;
	int m_nodePixelCount[MAXNUMDENSITYTYPE];
			
	CHeader();
	~CHeader();
	void AddNode();

protected:
		
};

//-----------------------------------------------------------------------------
// matrix ��d; '�� Ŭ���� ���� 
//-----------------------------------------------------------------------------
class CMatrix
{
public:

	int m_matLength;
	int m_height, m_width;
	int m_centerX, m_centerY;

	int m_numOrder;
	int m_orderArray[MAXNUMORDER];

	INDEXMAP m_matMap[MAXNUMMATRIXMAP];

//	CHeader* isoList;
//	CHeader* horList;
//	CHeader* verList;

	CMatrix();
	CMatrix(int mapHeight, int mapWidth);
	~CMatrix();
	
	int* GetOrderList();
	int GetNumOrder();
	void SetMapSize(int mapHeight, int mapWidth);
	
	int* MakeOrderList();
	INDEXMAP MatrixType(int matType, char* strMatType);
	INDEXMAP MakeNULLMatrixMap();
	void DeleteMatrixMap(INDEXMAP map);
	CHeader* MakeMatrixList(INDEXMAP map);
	void DeleteMatrixList(CHeader* matList);
	INDEXMAP MakeMatrixMap(int matType);
//	INDEXMAP MakeHorizontalMatrix();
//	INDEXMAP MakeVerticalMatrix();
	void PrintASCIIMatrix(int matType);
	void Print2DList(int matType);
	
//	void PrintMatrixList(int matType);
//	double GetAverage(int type);
//	CMap* Analysis(CMap* Map, int* order);
	
protected:
};
